Current computer graphics techniques include sophisticated software and hardware to quickly compute and provide realist three dimensional (3D) renderings. Current 3D hardware comprises special purpose texture filtering abilities that are typically optimized for linear data. When these filters are applied to non-linear texture data, such as normals and specular exponents used in lighting equations, the artifacts generated can be severe. Texture space lighting has been utilized to mitigate these artifacts. Texture space lighting includes non-linear lighting equations for computing lighting of a geometry per-sample on a texture rather than per-pixel. Texture space lighting can eliminate artifacts caused by linearly filtering non-linear data by applying non-linear lighting equations directly to data that can be linearly filtered.
Texture space lighting, however, is bottlenecked by the fact that regardless of the size of the object on the screen, the lighting of the object is computed for every sample of the full-resolution texture. Existing solutions attempt to minimize this bottleneck by computing the lighting for the samples only on the needed levels of the MIP-map chain. A MIP-map chain is a series of textures used to render an object at different scales (e.g., viewing the object from different distances). A MIP-map chain comprises a series of textures, each having a different resolution and each pre-filtered to represent the same texture data at multiple scales. Unfortunately, computing lighting for only the needed levels of the MIP-map chain negates the benefit of texture space lighting, because MIP-maps are calculated using linear filtering techniques.